Avoid _setjmp/_longjmp problems with local nonvolatile variables.
authorPaul Eggert <eggert@cs.ucla.edu>
Tue, 11 Sep 2012 23:50:28 +0000 (16:50 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Tue, 11 Sep 2012 23:50:28 +0000 (16:50 -0700)
commit43ec26d9f8936db123b5e40a3bb8995e634010e7
tree95a64098b0b99dd03ed31e8f11f213ce9a9f7aaa
parent5be4821a1a0eff3b09aa850af28e936e1c000d93
Avoid _setjmp/_longjmp problems with local nonvolatile variables.

If a nonvolatile local variable is written before a _longjmp to
the frame containing the variable, and is read after the _longjmp,
the value read is indeterminate.  Some local variables of type
'struct handler' and 'struct catchtag' are used in this way, so
mark each of their slots as volatile if the slot can be set before
_longjmp and read afterwards.
* lisp.h (struct handler): var and chosen_clause are now volatile.
(struct catchtag): val, next, and pdlcount are now volatile.
src/ChangeLog
src/lisp.h